package offer;

import java.util.*;

@FunctionalInterface
public interface NumberOfGoodSubsets {
    int numberOfGoodSubsets(int[] nums);
}
class NumberOfGoodSubsetsImpl1 implements NumberOfGoodSubsets{

    // 30以内的质数表
    static final int[] PRIME_NUMBERS = new int[]{2,3,5,7,11,13,17,19,23,29};
    // 30以内分解质因数后，因数不重复的数字
    static final int[] A = new int[]{6,10,14,15,22,26,30};
    static final int MOD_NUMBER = (int) 1e9 + 7;

    /**
     * 可分为两种情况，
     * 1.某好子集中元素均为质数，则该好子集出现次数为 （1的次数+1）* 每个质数出现的次数，设为m
     * 2.某好子集中存在合数，（1的次数+1）* 质数出现次数 * 合数出现次数
     * @param nums
     * @return
     */
    @Override
    public int numberOfGoodSubsets(int[] nums) {
        // 如果好子集存在，如果该好子集的某一真子集元素均在全集中，则该好子集的真子集也是全集的好子集
        // 如果存在一个最大好子集，使得其乘积最大。
        Set<Integer> primeNumbersSet = new HashSet<>();
        for(int prime : PRIME_NUMBERS){
            primeNumbersSet.add(prime);
        }
        // 筛一遍元素，筛去其中存在因子不是质数的元素
        List<Integer> candidates = new ArrayList<>();
        int[] elements = new int[31];
        for (int i = 1; i < elements.length; i++) {
            elements[i] = 0;
        }


        for (int i = 0; i < nums.length; i++) {
            elements[nums[i]] ++;
        }
        return 0;
    }
}
